/*
todo
 1. 按鍵名稱應該加入多國語言設計。 <= 在 dasp 已實現作法！

2011-12-23
 1. enum BTN 新增 NEW 因子，NEW 建議是 Query 頁面專用，新增頁面則使用 ADD。

2011-11-28
 1. showDateComponent 修改加入 id HTML 語法，解決 IE 以外的 browser 可以正確顯示日曆元件。

2011-05-12
 1. 增加 BTN : RLD("重載"), STOP("停止"), STRT("開始")。

2011-03-06
 1. 正式將日曆元件加入 SimplePage.showDateComponent。

2011-02-16
 1. 修改 BTN 架構強迫每次設計讓每個按鍵都有名稱，就不會跑【按我】了。
*/

package idv.jieh.web.html;

public class SimplePage {

  public static String PAGEID_KEY = "SIMPLE_PAGE_PAGEID";

  public static enum BTN{
    ADD("新增"), MOD("修改"), DEL("刪除"),
    QRY("查詢"), NEXT("下一步"), PREV("上一步"),
    PRT("列印"), BACK("回上頁"), UPL("上傳"),
    DNL("下載"), REST("清除"), APRV("同意"),
    RJT("退回"), PASS("送出"), RLD("重載"),
    STOP("停止"), STRT("開始"), NEW("新增"), // QUERY PAGE 使用 NEW

    ;

    private String title;
    private BTN(String title){this.title = title;}

    private String title(){return title;}
  }


  public StringBuilder button(BTN btn){
    StringBuilder r = new StringBuilder();
    r.append("<input type=submit name=").append(btn);
    r.append(" id=").append(btn);
    r.append(" value=").append(btn.title()).append(">");
    return r;
  }


  /**
   * 送出後指定"豪秒"數限時鎖住按鈕不作用。
   * @param btn BTN
   * @param timeout int
   * @return StringBuilder
   */
  public StringBuilder button(BTN btn, int timeout){
    StringBuilder mr = this.button(btn);
    mr.insert(mr.lastIndexOf(">"), " disabled");
    mr.append("<script>javascript:window.setTimeout(\"countdownEnable('");
    mr.append(btn);
    mr.append("')\",");
    mr.append(timeout);
    mr.append(");</script>");
    return mr;
  }


  /*
  <input type="text" id=date1 name=date1 size=10 value='2008-03-01' readonly>
  <input type=button value=X onclick=clearValue('date1');>
  <script type=text/javascript>Calendar.setup( {inputField:'date1', button:'date1'} );</script>
  */
  public String showDateComponent(String name, String value){
    StringBuilder r = new StringBuilder();
    r.append("<input type=text id=").append(name);
    r.append(" name=").append(name).append(" size=10");
//    r.append("<input type=text name=").append(name).append(" size=10");
    r.append(" value='").append(value).append("' readonly>");

    r.append("<input type=button value=X onclick=clearValue('").append(name).append("');>");

    r.append("<script type=text/javascript>Calendar.setup( {inputField:'").append(name);
    r.append("', button:'").append(name).append("'} );</script>");

    return r.toString();
  }


  public StringBuilder showModifyLink(
    Object jsp_page,
    int funcid_length,
    int rowid)
  {
    StringBuilder r = new StringBuilder();
    String pageid = this.parsePageID(jsp_page);
//    r.append("'");
    r.append(pageid.substring(0, funcid_length)).append(".do?");
    r.append(PAGEID_KEY).append("=").append(pageid);
    r.append("&MOD=1").append("&rowid=").append(rowid);
//    r.append("'");
    return r;
  }

  // 取得完整網頁代碼(pageid)
  private String parsePageID(Object jsp_page){
    String page_str = jsp_page.toString();
    int idx_s = page_str.lastIndexOf(".") + 1;
    // modify 2006-08-18 by jieh
//    int idx_e = idx_s + funcid_length + 1;
    int idx_e = page_str.lastIndexOf("_");
    return page_str.substring(idx_s, idx_e);
  }


  // add 2006-08-10 by jieh
  // 產生 HTML ; <input type=hidden name=SIMPLE_PAGE_PAGEID value=VPMS1100N>
  public StringBuilder showHiddenPageID(Object jsp_page, int funcid_length){
    StringBuilder r = new StringBuilder();
    r.append("<input type=hidden name=").append(PAGEID_KEY);
    r.append(" value=").append(parsePageID(jsp_page)).append(">");
    return r;
  }


  // add 2011-02-11 by jieh
  // 產生 HTML ; <input type=hidden name=SIMPLE_PAGE_PAGEID value=VPMS1100N>
  /*
    抓到 tomcat 產生 jsp class 到 _ 為止 不確定其他 ap server 的規則
    所以仍保留有 funcid_length 的方法
  */
  public StringBuilder showHiddenPageID(Object jsp_page){
    StringBuilder r = new StringBuilder();
    r.append("<input type=hidden name=").append(PAGEID_KEY);
    r.append(" value=").append(parsePageID(jsp_page)).append(">");
    return r;
  }

}
